//#include "stm32f1xx_hal.h"
#include "tim.h"
#include "Encoder.h"
#include "gpio.h"

int16_t Encoder_Count;					//全局变量，用于计数旋转编码器的增量值

/**
  * 函    数：旋转编码器初始化
  * 参    数：无
  * 返 回 值：无
  */
void Encoder_Init(void)
{
	Encoder_Count = 0;
	MX_GPIO_Init();
}

int16_t Encoder_Get(void)
{
	/*使用Temp变量作为中继，目的是返回Encoder_Count后将其清零*/
	/*在这里，也可以直接返回Encoder_Count
	  但这样就不是获取增量值的操作方法了
	  也可以实现功能，只是思路不一样*/
	int16_t Temp;
	Temp = Encoder_Count;
	Encoder_Count = 0;
	printf("%d",Temp);
	return Temp;
}

/**
  * 函    数：旋转编码器获取增量值
  * 参    数：无
  * 返 回 值：编码器旋转方向（1：正转，-1：反转，0：无旋转）
  */
int16_t Encoder_MENU_Get(void)
{
	int16_t Temp;
	Temp = Encoder_Count;
	Encoder_Count = 0;
	
	// 根据编码器计数判断旋转方向
	if (Temp > 0) {
		return 1;		// 正转返回1
	} else if (Temp < 0) {
		return -1;		// 反转返回-1
	} else {
		return 0;		// 无旋转返回0
	}
}
